1. Field of the Invention
The present invention generally relates to computer hardware. More specifically, the present invention relates to bandwidth impedance matching and starvation avoidance by read completion buffer allocation.
2. Description of the Related Art
A modern computer system may be implemented with a processor that executes many operations in parallel known as a parallel processing unit (PPU). PPUs are generally managed by one or more engines, or clients, that perform operations such as memory management, graphics display, instruction fetching, encryption, and other operations.
As clients carry out operations, they make requests to read data from parallel processor (PP) local memory or from system memory. The requested data may be returned from memory in fragments that require reassembly. One way to accomplish reassembly would be to store each fragment of the requested data in temporary storage until all of the fragments have returned. The requested data could then be reassembled from the fragments and returned to the client.
If a client issued read requests faster than it can consume read data, the temporary storage might fill up with data fragments faster than those fragments could be reassembled and returned to the client. For example, a client with a 16-byte wide read completion interface can only read 16 bytes per clock cycle, but might issue read requests of larger sizes (e.g., 256 bytes) every clock cycle. In such a case, the temporary storage would quickly become consumed. If this client shared the temporary storage resource with other clients, those clients would be prevented from making use of the temporary storage and would be starved of the requested read data.